﻿using Core.Domain.Entities;
using Core.Migrations.Extensions;
using FluentMigrator;

namespace Infrastructure.Persistence.Migrations.Permissions;

[Migration(202510232358)]
public class CreateColumn : ForwardOnlyMigration
{
    public override void Up()
    {
        Alter.Table(typeof(Permission).GetTableName())
          .InSchema(SchemaNames.Identity)
          .AddColumn("TenantId").AsString(100).Nullable().WithColumnDescription("租户标识")
          .AddColumn(MigrationExpressions.ColumnNameFor<Permission>(nameof(Permission.Code))).AsString(50).Nullable().WithColumnDescription("编码")
          .AddColumn(MigrationExpressions.ColumnNameFor<Permission>(nameof(Permission.Name))).AsString(100).Indexed("IX_Permissions_Name").Nullable().WithColumnDescription("名称")
          .AddColumn(MigrationExpressions.ColumnNameFor<Permission>(nameof(Permission.Group))).AsString(50).Indexed("IX_Permissions_Group").Nullable().WithColumnDescription("分组")
          .AddColumn(MigrationExpressions.ColumnNameFor<Permission>(nameof(Permission.ParentId))).AsGuid().Indexed("IX_Permissions_ParentId").Nullable().WithColumnDescription("父节点")
          .AddColumn("MenuType").AsInt32().Nullable().WithDefaultValue(0).WithColumnDescription("菜单类型（0代表菜单、1代表iframe、2代表外链、3代表按钮、4页面）")
          .AddColumn("Title").AsString(100).Nullable().WithColumnDescription("标题")
          .AddColumn("RouteName").AsString(100).Nullable().WithColumnDescription("路由名称")
          .AddColumn("Path").AsString(100).Nullable().WithColumnDescription("路径")
          .AddColumn("Component").AsString(100).Nullable().WithColumnDescription("组件")
          .AddColumn("Rank").AsInt32().Nullable().WithDefaultValue(99).WithColumnDescription("排序")
          .AddColumn("Redirect").AsString(100).Nullable().WithColumnDescription("重定向")
          .AddColumn("Icon").AsString(100).Nullable().WithColumnDescription("图标1")
          .AddColumn("ExtraIcon").AsString(100).Nullable().WithColumnDescription("图标2")
          .AddColumn("EnterTransition").AsString(100).Nullable().WithColumnDescription("进入动画")
          .AddColumn("LeaveTransition").AsString(100).Nullable().WithColumnDescription("离开动画")
          .AddColumn("ActivePath").AsString(100).Nullable().WithColumnDescription("激活路径")
          .AddColumn("FrameSrc").AsString(100).Nullable().WithColumnDescription("源")
          .AddColumn("FrameLoading").AsBoolean().Nullable().WithDefaultValue(true).WithColumnDescription("加载")
          .AddColumn("KeepAlive").AsBoolean().Nullable().WithDefaultValue(false).WithColumnDescription("激活")
          .AddColumn("HiddenTag").AsBoolean().Nullable().WithDefaultValue(false).WithColumnDescription("隐藏标签")
          .AddColumn("FixedTag").AsBoolean().Nullable().WithDefaultValue(false).WithColumnDescription("固定标签")
          .AddColumn("ShowLink").AsBoolean().Nullable().WithDefaultValue(false).WithColumnDescription("展示链接")
          .AddColumn("ShowParent").AsBoolean().Nullable().WithDefaultValue(false).WithColumnDescription("展示父菜单"); 
    }
}
